Web services are distributed computing applications that can be invoked across the Internet. Web services are generally designed so that they can interact with one another. Thus, a Web service should be interoperable in order to exchange messages with other Web services and clients over a network. Web services standards based on the eXtensible Markup Language (XML), for example, such as the Simple Object Access Protocol (SOAP) and the Web Services Description Language (WSDL), provide a high level of interoperability across platforms, programming languages and applications.
A Web service defines a communication protocol between the service and its clients for the exchange of messages. Mechanisms for flexible composition of Web services greatly simplify development of new services with integrated and value added functionality. A number of techniques have been developed for composing Web services. The Business Process Execution Language for Web Services (BPEL), for example, is one proposed description language that supports the composition of Web services. See, T. Andrews et al., Business Process Execution Language for Web Services, Version 1.1, 2003. BPEL can describe behavior of a Web service that combines operations of existing Web services (specified in WSDL) into an integrated and value added service.
As Web service interfaces and their choreographies grow in complexity, rapid and reliable development of interoperable services and clients becomes more and more of a challenge. For a composite Web service, a composite protocol can be created, based on the protocols defined by its sub-services and value added functionality. The inherent structure of the protocol between sub-services, the composite Web service, and its clients is key for structuring the specification of the composite Web service and for structuring the internal design of the composite Web service and its clients. Specification structure and internal design structure determine most important quality attributes of a Web services solution such as interoperability, maintainability, testability, and changeability.
A need therefore exists for a flexible composition mechanism that allows structuring a Web service protocol into self-contained micro-protocols. A further need exists for mechanisms to impose the inherent structure of a Web service protocol onto the structure of a Web service specification and onto the internal design structure of a Web service and its clients.